iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
自我挑戰組

iOS Junior的菜雞之路系列 第 14

Frame 虐我千百遍,SnapKit待我如初戀

  • 分享至 

  • xImage
  •  

說到Frame大家應該是很熟悉,使用程式建立畫面的時候應該常常會是用frame來建構
但說到底,frame建出來的畫面跟我想像中的畫面其實就不太一樣,搞得我每次使用frame都需要一直修正

發現其實有很好用的套件可以幫助畫面建構,即SnapKit,應該也有很多人使用過
不過使用之前要先去SPM下載SnapKit套件

說到這個,曾經我還在面試的時候,有個面試官語重心長的跟我說:「SnapKit是個好東西,如果你不會趕快去學,這個大部分人都在用」,然後就在我以為我能一親芳澤,能魚躍龍門成為工程師的時候,還是那個他,無情的打臉我,通過一封感謝信讓我知道還要學的東西還有很多。

回到主題,扯太遠去了

舉例:空畫面

當今天網路不夠力,你的東西跑不出來,但你又必須給你的使用者一個交代的時候該怎麼辦
嗯,給他個空畫面打發他,請他到網路好一點的地方去重頭來過

像是這個情況,我們一般會提供給使用者一個空畫面,那麼此時空畫面的建構我們就可以使用SnapKit來處理

// 假設你已經寫了一個ErrorView的Class
lazy var errorView: ErrorView = {
    let errorView = ErrorView()
    view.addSubView(errorView)
    
    // 希望使用SuperView的框架去串接
    errorView.snp.constraints { make in
        make.top.equalToSuperView()
        make.left.equalToSuperView()
        make.right.equalToSuperView()
        make.bottom.equalToSuperView()        
    }
    errorView.isHidden = true
    return errorView
}()

寫法2

// 當然有可以對上某個view
make.top.equalTo(self.tableView.snp.top)

寫法3

// 或是加上offset,讓你有更多可以調控的範圍
make.right.equalTo(self.tableView.snp.right).offset(10)

使用這些都能快速的幫你建構出你想像中的Frame


坑:
那個語法一開始不是很能理解,看了好久,然後很容易忘記打一些字哈哈
還有記得要先加入SubView,這樣如果要使用SuperView的話才會有共同的ancestor


上一篇
中央空調Notification:我想給每個訂閱者一個家
下一篇
我現在進來了,誒,我又出去了 難道你是方唐SheetDB
系列文
iOS Junior的菜雞之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言